%{
#include <stdio.h>
#include "../include/define.h"
#include "../include/parseNames.h"
int elementsQuantity = 0;

%}

LETTER [A-Za-z]

NUMBER [0-9]

SPACE [ ]

ELEMENT_NAME ({LETTER}+{SPACE}*)+

%%

{ELEMENT_NAME} {
	int i,j = yyleng;
		
	j--;
	
	for(; yytext[j] == ' '; j--) {
		yytext[j] = '\0';
	}
	
	for(i = 0; yytext[i] == ' '; i++);
	
	for(j = 0; yytext[j] != '\0'; j++) {
		yytext[j] = yytext[j + i];
	}
		
	
	elements = realloc(elements, (elementsQuantity + 2) * sizeof(Element));
	elements[elementsQuantity].name = malloc((yyleng + 1) * sizeof(char *));
	strcpy(elements[elementsQuantity].name, yytext);


	elements[elementsQuantity+1].name = NULL;
	
	elementsQuantity ++;
	
}



. {	
	printf("ERROR: Hay errores en el archivo .name\n");
	printf("Este archivo solo puede contener letras, espacios o enters\n");
	exit(1);
}
\n {}

%%

int yywrap() {
	return(1);
}

Element* getElements(char * elementsFile)
{
	yyin = fopen(elementsFile, "r");
	if(yyin == NULL) {
		printf("ERROR: El archivo .name especficado no existe o no se puede abrir\n");
		exit(1);
	}
	yylex();
	fclose(yyin);
	return elements;
}
